package com.jmyd.sharding.domain.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.jmyd.sharding.annatations.Date2LongSerializer;
import com.jmyd.sharding.domain.po.SysCoupon;
import com.jmyd.sharding.domain.po.SysUser;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author samphin
 * @date 2024/6/19 9:46
 */
@Data
public class SysCouponVo {
    /**
     * 主键ID
     */
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 优惠券名称
     */
    private String name;

    /**
     * 折扣率
     */
    private BigDecimal discountAmount;

    /**
     * 最高抵扣金额
     */
    private Integer highestDeductionAmount;

    /**
     * 优惠券类型:1：免单券，2：满减券 3：折扣券 4：立减券 5：随机券
     */
    private Integer type;

    /**
     * 优惠券状态(0:未使用 1:已使用 2:已过期)
     */
    private Integer status;

    /**
     * 优惠码
     */
    private String code;

    /**
     * 优惠券有效期起始时间
     */
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date validStartTime;

    /**
     * 优惠券有效期结束时间
     */
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date validEndTime;

    /**
     * 互斥状态：true=互斥;false=不互斥
     */
    private Boolean exclusiveStatus;

    /**
     * 使用平台：PC、APP、H5、APPLET
     */
    private String usePlatform;

    /**
     * 业务类型:1：购买展厅
     */
    private Integer businessType;

    /**
     * 描述
     */
    private String desc;

    /**
     * 创建时间
     */
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date createTs;

    /**
     * 修改时间
     */
    @JsonSerialize(using = Date2LongSerializer.class)
    private Date updateTs;

    public SysCouponVo buildVo(SysCoupon sysCoupon) {
        BeanUtils.copyProperties(sysCoupon, this);
        this.setId(sysCoupon.getId());
        return this;
    }
}